package br.com.ucb.invista.converter;

import java.io.Serializable;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import br.com.ucb.invista.connection.EntityManagerFactory;
import br.com.ucb.invista.domain.Produto;

@FacesConverter(value = "produtoConverter", forClass = Produto.class)
public class ProdutoConverter implements Converter, Serializable {

	private static final long serialVersionUID = 1L;

	/***
	 * Responsavel por Converter os objetos. Se a string nao for nula ou o usuario nao selecionou um campo, entao ele retorna null. Senao ele retorna todo o objeto.
	 */
	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String string) {
		if(string == null || string.equals("Selecione")) {
			return null;
		}
		return EntityManagerFactory.getEntityManager().find(Produto.class, Long.parseLong(string));
	}

	/***
	 * Responsavel por Converter os objetos. Pega o objeto completo e retorna o Codigo para a pagina.
	 */
	@Override
	public String getAsString(FacesContext context, UIComponent component, Object object) {
		if(object == null) {
			return null;
		}
		Produto pessoa = (Produto) object;
		return pessoa.getCodigo().toString();
	}
}
